Long drawn out descriptions of how the program works:
The Displays:
After the splash page comes up, click All Aboard and you are
presented with 2 windows. The clock window is on the top right.
Default is to have Midnight displayed and set to run 8 times fast.
Also displayed is the speed ratio and start time at the bottom of
the window. These will be auto scaled with changes to the main
digits via the Clock menu. The information window is on the bottom
left. It tells you if you are transmitting packets and if so, how
many serial bytes are used, the time in microseconds to send that
data, and the rate in cycles per second that a packet could be
repeated.
The Loco windows default to no locomotives, and therefore are not
visible at startup. Choose Add Locomotive... in the Setup menu for
the dialog to define a locomotive or Open Loco... to read in a
saved locomotive setup. Choose the Setup menu item Transmit Data to
start sending packets addressed to the locomotive(s) displayed on
screen. Once transmitting packets, the window(s) will not close
until you turn off packet transmission.
The Accessory windows default to no accessories, and therefore is
not visible at startup. Choose Add Accessory... in the Setup menu
for the dialog to define an accessory. Choose the Setup menu item
Transmit Data to start sending packets addressed to the accessories
displayed on screen. Once transmitting packets, the window(s) will
not close until you turn off packet transmission.
You can double click the mouse button on the function control boxes
to make them flash (rate is set in the Setup dialog). If you single
click on them they will turn on and off as expected, and if they
are flashing then it will delay the flash by one cycle. (Useful for
alternating the flash of two functions such as ditch lights).
Double clicking on a locomotive or accessory display area other
than a button, box, or control will bring up the Setup dialog box
for that locomotive or accessory. The data out the serial port
should be unaffected by this operation except with old, slow Macs
that may make the locos jerk a bit while the window is loaded. The
locomotive or accessory is then "selected", making it the one to be
saved via the File menu and its data displayed when programming
registers. A single click on the display area will "select" that
locomotive or accessory. Keyboard control of a locomotive that has
been selected is explained in the Keyboard Control chapter.The Menus:
File: You can only open a file of three specific formats. You can Open
Locomotive and Save Selected Locomotive data that you changed in
the locomotive setup dialog and programming dialog. It will only
save the one "selected" locomotive indicated on the DCC window. You
can save an individual loco so you can have more locomotives
defined than you would use during a particular operating session.
New locos are added to the first window with an empty space. *Note
that if there are already the maximum number of locomotives
displayed, the new loco will delete the last defined locomotive.
See the Loco menu for the order of creation.
Accessories are handled the same as locomotives with the Open
Accessory and Save Selected Accessory menu items.
An entire roster of several locos and accessories can be opened and
saved as well with the Open Setup... and Save Setup... commands.
The window locations are restored, but the clock data is not (yet).
The program forces you to save the name of the setup file each time
so that you can have multiple operating sessions with different
rosters of locomotives. Some might call this a bug, but I think of
it as a feature.
Note: The locomotive programming information is saved with either
the individual loco or the setup, but if you open a setup after
making changes to an individual loco file, the changes will NOT be
loaded. You will want to delete the setup file's loco and then open
the individual loco file. If you make changes to a loco while an
entire setup is open you should save the individual loco data as
well as the setup.
You can also Quit the program. Always useful if you want to do
something else.
Edit: There isn't anything to edit yet, so it is disabled except for
textedit boxes that the system handles on its own.
Clock: There are 6 sub-menus here.
Clock Style lets you display seconds, no seconds, 12 hour AM/PM
mode or 24 Hour mode. The window will be resized automatically if
you change the clock style. This lets you have a nearly full screen
display if you use 24 Hour mode without seconds. So far you only
have a digital display. I may add an analog display option later,
again you need to let me know you want it or it may not happen.
Start Time lets you specify the time to be displayed. The default
time is local time, set via the General control panel or other time
keeping program. If you have the Map control panel, you can specify
where you are on the globe, so that Greenwich Mean Time will be
correct. If you choose this option and the time stays the same, you
don't have the Map control panel or you live in the GMT time zone.
You can also set the start time to be any whole hour between
Midnight and Eleven PM. This menu changes to reflect whether you
have time displayed as AM/PM or as 24 hour mode.
Clock Speed: To change the clock speed you must have specified the
start time to be between Midnight and 11:00 PM. If you display
Local time or GMT, you are stuck with real-time just like the rest
of us. You can get up to 20:1 performance if you choose a start
time. Command key equivalents have been set up for the first ten
speeds (cmd-1 thru cmd-0). You can also pause the time (cmd-P)
(again not Local or GMT) if you need to go answer the phone or
answer the call of nature in the middle of an operating session.
Text menus: You will find that you can change the font, size and
style of the numbers displayed. The program will automatically
resize the window for you centered about the present location of
the window. If you move the window via the drag bar, then the
window will stay there and any more changes requiring a new window
size will be centered about the new location. The program will
think awhile about what size fonts it can handle on the screen and
will make the size menu change to indicate the largest size that
will fit on the main screen.
Acc's menu:
When you select the accessory you want to modify, a dialog box will
come up with various items to change for that accessory. See the
Setup menu description below for details. Double clicking on a non-
control area of an accessory will also open this dialog window.
Loco menu:
When you select the locomotive you want to modify, a dialog box
will come up with various items to change for that locomotive. See
the Setup menu description below for details. Double clicking on a
non-control area of a locomotive will also open this dialog window.
Setup menu:
Add Locomotive...: Lets you add another locomotive to the roster.
You can add locos, and delete them. You are limited to 40 at a time
if you have a 16" monitor, 30 at a time with a 13" monitor, and 25
at a time with a 9" monitor. The dialog box lets you change the
road name and number of the loco and the type of decoder installed.
The road name and number is displayed on the Loco window so you can
easily see what loco you are controlling instead of converting a
channel number in your head. You should limit the number of
characters to 9 on each line or they will be cut off. Use Shift-
Return to add a new line in the textedit box rather than leaving
the dialog. The channel number can be changed if it was
reprogrammed elsewhere, and it will change if you program a new
channel number using the programming dialog.
There are 5 speed options for your decoders. Basic 14 speeds,
Extended 28 speeds, Advanced 128 speeds and two special 28 speed
and 56 speed modes. The special interpolated speeds are done by
sending either the 14 speed or 28 speed packets about 25 times each
second, but bouncing between two different speeds so that the
decoder ends up averaging the two speeds. Program in some momentum
to the decoder to make it smoother. Beware that too much momentum
makes the trains start and stop slowly just like the real thing.
Emergency Stop is the Space Bar!
You can specify which window and where on the window the new
locomotive will go. This comes in handy if you have a set of locomotives you
want to set up to run together.
The MU Setup... button is for running multiple locomotives with one
slider bar control. Say you want to put a loco in the lead that has
channel 45, then when you can add other locos with different
channel numbers, set their MU channel to 45, and they will be
slaved to the lead locomotive. You need to specify which direction
the loco is facing. This direction is dependent on the lead loco,
so pay attention to which direction the lead is set to before
setting this. Once a loco is slaved, you can only control the
consist speed and direction from the lead loco. If you want to
match speeds with different locos, then time your locos at 14 speed
steps by setting up a loop of track to run around on. Press each
Test button in turn to time the loco. Press Stop when the loco
reaches the same spot. The program will convert the time it takes
to complete the loop into scale miles per hour for each speed step.
The lead loco will search for slaves and find the closest speed
step to match. Since a 28 speed decoder has finer control, it is
recommended that you use a 14 speed loco in the lead so the slaves
can better match the lead loco. But... If one loco has a much
faster top speed consider putting the 28 speed decoder in it, so
the finer control can be used at the low speed settings where it is
useful. The best solution is to use decoders with the 28 speed
table implemented in the configuration variables. This allows you
to set the loco speeds in the decoders and run your loco on other
layouts without tying you to this program. You can also MU two
locos by draging the slave onto the lead on the loco windows. To un-
MU a locomotive, drag the slave's box up to where a normal loco
would be drawn.
The Functions... button allows special effects for each of the
functions which may not yet be implemented on the decoder. A
flashing function is set by setting the check box to enable the
control and the check box to enable flashing. Set the time on and
off in integer units of 1/60 of a second. Default is no flashing
and 30/60th (1/2 second). There are two sets of on and off times,
to give you something like a Mars light effect. Try 20, 20, 20, 40.
You can set the name of the function for display on the Loco
window. Use Shift-Return to add a second line of text to that
function.
Note that the directional light uses function 5 of group 1 while in
extended 28 speed, and basic 14 speed packets use function 0 for
directional lights. Both of these are mapped to function 0 (or FL)
in this program. If you use 14 speed mode or 28 speed mode, the
program will use the appropriate function packet. If your head
light turns on and off when increasing speed, then your loco thinks
you are sending basic 14 speed packets when the program is sending
extended 28 speed packets. The bit that turns on the head lights in
14 speed mode is also used to give you the extra speeds in 28 speed
mode. If you are not getting the fine speed control you think you
should and the head light does not come on, then the program may be
sending 14 speed packets instead of 28. Newer decoders that adhere
better to the standard and RP's will use function 5 for 14 speeds
as well as 28 speeds, but the program will not turn on the function
5 bit. Just use 28 speed, it works.
The first five functions are latched, so that each time a loco
packet is refreshed (by changing speed or every 1/2 second or so
with no activity) the function value is sent again. The final four
functions are momentary (hence the button instead of a check box)
Only one packet to that function is sent when the button is
pressed. These are designed as triggers for sound effects more than
as lights which would be constantly on. I don't have a decoder to
test this, so if you do, let me know if it works or not.
Add Accessory... works very similar to the locomotive dialog,
except you only have functions to modify. I have implemented 6 bit
addressing to stay consistent with the decoders available now.
Lenz T001-, T001+ and Digitrax 1-t, 1-c are the same functions. If
you set the dialog box up to have any address between 1 and 4, it
will be displayed as Addr: 1-4 on the accessory control window.
There are 8 functions per set, but they are in pairs, such that
enabling one function of the pair disables the other. It should be
obvious when you play with the radio buttons. The RP's leave open
the possibility of having 8 independant functions whenever someone
produces a decoder that behaves that way. I have provided basic
support for this by allowing you to turn off the paired action.
Note that there will be no packet sent to turn off the individual
functions. The decoder will have to do that for now. You can make
the functions flash on and off (or switch a turnout back an forth
if you have some bizarre need) by setting the on off text boxes to
integer values as with the loco functions.
Transmit Data turns on packets to the serial port. The first time
the program attempts to send data, the port setup dialog will come
up (see below). If there are no locomotives nor accessories
defined, then idle packets will be sent.
The Port Setup... dialog lets you toggle between the modem port and
the printer port. The other buttons let you set the baud rate. 52
microseconds is the default and seems to work well.
Program Register... is used to change the decoders' default settings.
Remember to isolate all other locos and accessory decoders from the programming track or you will program them too.
Set the value you want in the text edit box and press the Write
button next to the item to change. The program will remember the
full page range of 128 values. (Remember to "save" your loco setup
to retain these new values.) When you press the program button, the
computer will send reset packets, then programming packets, then
turn off packet transmission to the loco(s) on the track. You may
hear the loco make a chirping sound if it was successful. The
choices for the different decoders allows you to see what
configuration variables are mapped to which address. Paging is
supported for the Digitrax decoder type. If you don't program the
page value before programming what is displayed in the first 4
registers, the new page will be done first automatically.
The Read buttons do not work yet as I have not added decoder
feedback.
Each bit can be set for a configuration variable by pressing the
Set Bits... button next to each variable. This allows you to see
what each bit does and makes it more convienient than having to
manually add up 1+8+32+128 to set those 4 bits. No description
means there is no meaning for individual bits for that
configuration variable.
Write All and Read All also are not implemented, but when they are,
they will only read and write the eight data displayed.
Background Friendly gives background tasks the recommended amount
of time to continue running, but if you have a slow Macintosh, or
are only running in Finder and not MultiFinder, then you will get
better flash rate performance with Background Unfriendly or
Background Hostile, which gives little time to background tasks.
To further speed things up, the last item allows you to turn off the
refresh of the status window with information about packets being sent.
Windows menu
This allows you to bring to front each window, or unhide a window
that was closed. Remember that if there is no locomotive or
accessory defined, then these windows will not appear. I should
make the windows dynamic, so that memory is not used on a window
definition if there are no locos or accessories for that window,
but that will have to wait until the next version. Can you say
'Hobby pursuits come in last in the priority list'?Keyboard Control
You can run ten locos from the keyboard or four with the keypad.
The "Selected" loco is highlighted and you can select a different
loco with the "tab" or keypad "." keys or a mouse click within the
box (but not on a control.) The number keys (0-8) will turn
functions on and off for the selected loco. Double press the key as
you would the mouse button to make functions flash as defined in
the loco setup dialog. This may go against User interface
guidelines for other programs, but I find it useful.
Most functions are duplicated for accessories by using option-key
instead of the key only. i.e. Turn on accessory function 1 with
option-1.
The extended keyboard and original Mac keyboard are the only two
tested as of yet, so beware the Plus keyboard...
*Emergency stop of all locos is Space, Return, or Enter.
*Space bar will kill power to the layout by terminating data out
the serial port, then it sets all speeds to zero for a safe restart.
*Return and Enter sends emergency stop commands, then sets all
speeds to zero. Followed by idle packets.
Direction for the selected loco is ">" key and "<" key (no shift
needed), or right arrow and left arrow.
Speed of the selected loco is "-" and "+" (no shift necessary) and
up and down arrows.
Functions 0 thru 8 of the selected loco are the 0 thru 8 keys on
the keyboard and functions 0 thru 6 of the selected loco are the 0
thru 6 keys on the keypad. I needed the 7 and 8 keys for speed
control, sorry.
Change "selected" loco by using tab or "." on keypad.
Decrease and Increase the channel number of the selected loco with
"[" or "]". This is useful for finding the loco channel number if
you don't know it. Set up the loco as usual, but start at channel
1. Give it some speed (half would be my choice) and then give it a
few seconds on each channel number. The program does not send
packets to locos not on screen, so there is no danger of a new loco
being placed on the layout running away because of an old command
being remembered for one of the addresses you tried.
Speed of the first loco can be increased and decreased with the "q"
and "a" keys, or the "clear" and "7" key on the keypad. Continue
pressing the "a" or "7" key to reverse and go faster in reverse.
Speed of the second loco is controlled with the "w" and "s" keys or
the "=" and "8" keys, third loco with the "e" and "d" keys or "/"
and "9" keys, etc. Up to ten locos can be controlled with the
keyboard, only the first four with the keypad. If you have a
detachable keypad, you have walk around control!!! A trick to run a
bunch of locos with the four keypad controls is to MU the first
four locos to be defined on screen with some other locos. This
needs some work as the order of keyboard control is not based on
the screen location, but rather when the locomotive was first
defined. Pull down the Loco menu to see the creation order of the
locos. There is a small number at the top of each slider control to
tell you which locomotive it is for keyboard control.
You may notice the slider control does not update immediately on
each keyboard key press. This is to give faster response on a Mac
Plus, which draws the control rather slowly. You can also turn off
the continuous info window display to gain rather a lot of speed
for loco control.
New features and version history:
FastClock+DCC 3.5.6 adds:
• Corrected the Set Bits dialog box and Configuration Variables to match the approved RP 9.2.2 of July, 1995.
• Changed my address and e-mail (I'm tired of moving!)
FastClock+DCC 3.5.5 adds:
• Fixed Crashing on a Mac Plus (Mostly) I had a random crash once and it may happen to you too. Let me know if it does and what you were doing.
FastClock+DCC 3.5 adds:
• Drag MUing of locomotives on the same window. Drag a slaved loco box
up a few pixels to un-MU.
• Correction to accessory packet format. Now supports 6 bit addressing
which I believe all decoders support.
• A new address and e-mail address for yours truly. Along with a new
splash page with the updated info.
• A few bugs found and stomped, along with some new ones created no
doubt.
• Keyboard control for accessories by using option-key.
Known Bugs:
• Double clicking a setup or loco document will just start up the
application.
• User interface is slightly awkward for keyboard control. (See above
description of keyboard control)
FastClock+DCC 3.4 adds:
• Dialog windows for Locomotive setup, Accessory setup and Programming
were completely rewritten. Additional dialogs were added for
locomotive functions and MU setup to declutter the main setup
window. More functions and a 14 speed table to match MU speeds
required this.
• Programming dialog now supports individual bit setting via a second
dialog. A description of the bits being set is included for each
configuration variable that this has meaning for.
• The second set of 4 functions are supported for a total of 9
functions for locomotive decoders and 8 functions for accessory
decoders.
• Interpolated speeds to fake the 14 speed decoders into running 28
speeds and the 28 speed decoders into running 56 speeds.
• Packets are sent only when something changes so that the interpolated
speeds have a good chance to actually work. Loco speed packets
are repeated every once in a while to keep lost packets from doing
too much harm. (Emergency stop is repeated!)
• Save window positions, all locos and accessories at once.
• 5 windows to control up to 40 locomotives and 40 accessories at once.
• You can specify which window and which location in the window each
locomotive and accessory goes. Useful for grouping consists.
FastClock+DCC 3.23 adds:
• Emergency Stop really works now.
• A couple more minor bugs were squished.
FastClock+DCC 3.22 adds:
• An official blessing from Apple Developer Support for the Fstc
creator type and file types FstA, FstD, FstB ! Rebuild the
desktop if you have an older version!!!
• All 124 Page register values are saved with the locomotive data and
displayed when programming.
• Automatic page value programming when programming the first four
registers if the page value displayed has not been programmed and
decoder type is Digitrax or Other.
• When decreasing speed using keyboard control, speed will stop at zero
if key held down. Press the key again to reverse, press and hold
again to speed up.
• Emergency Stop works with space bar.
• A couple more minor bugs were squished.
FastClock+DCC 3.2 added:
• Support for 5 accessory decoders with 5 functions each.
• Paging is supported for Digitrax decoders, including the 28 speed
tables at pages 17-23. (You can use ResEdit to add discriptions to
Str# resource 128 for other pages that may be supported later)
• Page register values are saved with the locomotive data and displayed
when programming.
• The program doesn't start sending packet data until you specify
Transmit Packets in the Setup menu, or try to program registers.
• The first time the program transmits data, the Setup Port dialog will
come up to verify which serial port you want packets blasted out
of.
• You can save each Locomotive and each Accessory separately, and open
each separately, allowing you to have a larger Roster than you can
load and run at one time.
• Added a little color for the selected loco and acc.
• Previously saved locomotive text files are no longer compatible with
this version in order to make saving more efficient, and to allow
additional features to be added later.
• You can close each window if you don't want it around. It merely
hides the window, rather than deleting everything. If you are
transmitting packets, the Loco and Acc windows will not go away.
• Programming Lenz decoders improved by removing track packets so the
decoders will incorporate the new register values.
• There are no default locomotives and accessories that you have to
delete each time.
• User interface has been improved in many small ways. (Throttles still
need some work)
• A flashy splash page of which I am particularly proud, has been
added.
FastClock+DCC 3.11 fixes several bugs that caused a crash when you
quit the program or after you had saved a locomotive setup, then
opened another.
FastClock+DCC 3.1 added programming of decoders. Both Lenz and
Digitrax decoders have been successfully programmed.
FastClock+DCC 2.0 added Digital Command Control using the proposed
NMRA standard. This lets you run a decoder equipped locomotive
using the serial port (either one) and a serial port booster to
give the signal a little bit of power to run a motor. Either the
Lenz LZ100 or the NMRAF7 booster will work.
FastClock 1.0 (Never released) was written for model
railroaders who want to have a fast clock running on their
computer during operations. The reasoning behind a fast clock is
so that a real (or imaginary) time table can be used to dispatch
trains between cities that may be hundreds of miles apart in the
real (or imaginary) world, but are only a few feet apart on the
model railroad layout. This allows the train to take hours to make
that run instead of seconds.
Items to be added to the program...
* Port to C++.
* PowerMac native.
* Option for smaller size application for running on Mac 512KE and 1 Meg Plus.
* Full-up simulation on more powerful Macs.
* Serial Port throttle control.
* Decoder feedback for programming and register value determination.
* Keep up with enhancements to the Extended Packet formats.
* Drag and Drop of the Loco controls to new window location.
* Simulation of train by specifying loco horsepower and empties/loads, etc.
* Save more data with Save Setup. This is kinda buggy and klunky as it is.
* Better memory management so I'm not wasting large amounts of RAM that
isn't needed.
* Online help of some sort.
* A better slider control instead of the free one I found on Internet
for loco speed control.
* Better graphics for the loco controls in general.
* Sounds that can run in the background and can be triggered. Both sampled and synthesized air horns and various other sounds.
* Layout drawing and turnout control tools to make a CTC dispatcher or tower operator station with layout feedback. Perhaps this could be a separate program that handles the feedback bus and communicates via Apple Events to the command station.
* Scriptable, recordable for automatic control.
* Autonomous control to run other trains for one-man operating sessions.
* Speech to simulate a dispatcher, other trains, defect detectors.
* Directional function control and other neat options that should be a
part of newer decoders.
* Serial throttle control with Digitrax LocoNet walk around controllers.
There's lots of work here. My primary concern is to make it efficient for use on slow, low memory Macs that can be bought inexpensively to get people into DCC, but I'm also itching to use Drag and Drop, have cool looking graphics, and do some real simulation.
I also want to keep it affordable, since I've gotten so much from the internet and the shareware that others have worked hard to make. So far I've gotten 3 shareware payments. Compared to the professional looking programs that are out on the net, I'm really tickled to have gotten anything. Making the transition from DOD aerospace worker to commercial Mac developer is one of my long term goals, so this project is important to me to show my stuff to any prospective employer.
Any questions, comments, or suggestions give me a call...